<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>07_函数中的this</title>
	</head>
	<body>
		<!--
			1. this是什么?
			  * 任何函数本质上都是通过某个对象来调用的,如果没有直接指定就是window
			  * 所有函数内部都有一个变量this
			  * 它的值是调用函数的当前对象
			2. 如何确定this的值?
			  * test(): window
			  * p.test(): p
			  * new test(): 新创建的对象
			  * p.call(obj): obj
		-->

		<script type="text/javascript">
			function Person(color) {
				console.log(this)
				this.color = color;
				this.getColor = function() {
					console.log(this)
					return this.color;
				};
				this.setColor = function(color) {
					console.log(this)
					this.color = color;
				};
			}

			Person("red"); //this是谁? window

			var p = new Person("yello"); //this是谁? p

			p.getColor(); //this是谁? p

			var obj = {};
			p.setColor.call(obj, "black"); //this是谁? obj

			var test = p.setColor;
			test(); //this是谁? window

			function fun1() {
				function fun2() {
					console.log(this);
				}

				fun2(); //this是谁? window
			}
			fun1();
		</script>
	</body>
</html>
